// 2014-02-01 Tyrghen
//---------------------------------------------
// Usage:
//  ["marker_factory"] call edt_fnc_reinfVec;
//  [[1234,3245,0],resistance,["I_Soldier_SL_F","I_soldier_F","I_Soldier_exp_F","I_Soldier_GL_F"]] call edt_fnc_reinfVec;
//  [bunker,west,[],"B_Truck_01_covered_F"] call edt_fnc_reinfVec;
//---------------------------------------------
// Purpose:
// Sends reinforcement inside a small vehicle convoy. When on site, or attacked, or stopped (if the vehicle is stuck), the units will disembark.
// 
// Parameters:
// - Target, can be a coordinate, a marker or an object
// Optional Parameters:
// - Side of the units (by default: the current enemy side)
// - Units, an array containing a list of the units in the convoy
// - Vehicle, the type of the vehicle used by the convoy. The amount of vehicles will be calculated depending on the number of units to transport
// - Start point, can be a coordinate, a marker or an object
//
// Returns:
// Nothing
//---------------------------------------------
// Objectif:
// Envoies des renforts par véhicule dans un petit convoi. Quand ils arrivent sur place, sont attaqués ou stoppés (le véhicule est bloqué), les unités débarquent.
//
// Paramètres:
// - Cible, peut être des coordonnées, un marqueur ou un objet
// Paramètres optionnels:
// - Camp des unités (par défaut: le camp ennemi actuel)
// - Unités, un tableau reprenant la liste de toutes les unités du groupe
// - Vehicule, le type du véhicule de transport utilisé pour le convoi. Le nombre de véhicule sera calculé en fonction du nombre d'unités qu'il peut transporter
// - Point de départ, si on ne souhaite pas qu'il soit aléatoire, un marqueur, une position ou un objet
//
// Renvoie:
// Rien
//---------------------------------------------

//#define __FORCE_TRACE__
//#define __FORCE_DEBUG__
//#define __FORCE_INFO__
#define THIS_FILE "editor\fn_reinfVec.sqf"
#include <tmf_constants.h>
#include <tmf_macros.h>

TRACE_1("Start",_this);
TMFPROFILERSTART;

if !(isServer || (!isDedicated && !hasInterface)) exitWith { DEBUG("Not server or HC"); };

private ["_target","_shape_start","_shape_target","_start_point","_side","_units","_vehicle"];
DEFAULT_PARAM(_target,0,"");
DEFAULT_PARAM(_side,1,GVAR(SIDE_ENEMY));
DEFAULT_PARAM(_units,2,[]);
DEFAULT_PARAM(_vehicle,3,"");
DEFAULT_PARAM(_start_point,4,"");

_shape_target = [_target] call FFUNC(toShape);
_shape_start = [_start_point] call FFUNC(toShape);

if (((_shape_target select 0) vectorDistance [0,0,0]) > 0) then {
	_params = [];
	_params set [0, TMF_SERVER_INSTANCE_ID];
	_params set [1, (_shape_target select 0)];
	_params set [2, _side];
	_params set [3, _units];
	_params set [4, _vehicle];
	_params set [5, 200];
	if (((_shape_start select 0) vectorDistance [0,0,0]) > 0) then {
		_params set [6, (_shape_start select 0)];
	};
	TRACE_1("Params",_params);

	[_params,QUOTE(FFUNC(reinfMechanised))] call FFUNC(callHC);
} else {
	ERROR_1("Invalid input parameters",_this);
};
TRACE("End");
TMFPROFILERSTOP;